﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using CapaNegocio;

public partial class abmOrdenesTrabajo_ConsultarOrdenes : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

        if (Session["UsuLogin"] == null)
        {
            Response.Redirect("../Default.aspx", true);
        }
        else
        {

            if (!IsPostBack)
            {
                Usuario usu = ((Usuario)(Session["UsuLogin"]));
                Label1.Text = usu.Apellido + ", " + usu.Nombre + " (" + usu.Perfil.Nombre + ")";
            }
            refreshGrid();
        }
    }

    protected void botonCancelar_Click(object sender, EventArgs e)
    {
        
        Usuario usu = ((Usuario)(Session["UsuLogin"]));

            if (usu.Perfil.Id == 3)
            {
                Response.Redirect("../MenuConstructor.aspx");
            }
            else {
                Response.Redirect("../MenuAdministrativo.aspx");
            }
    }

    protected void grdOrdenes_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdOrdenes.PageIndex = e.NewPageIndex;
        grdOrdenes.DataBind();
    }

    protected void grdOrdenes_Sorting(object sender, GridViewSortEventArgs e)
    {
        DataTable dataTable = (DataTable)grdOrdenes.DataSource;

        if (dataTable != null)
        {
            DataView dataView = new DataView(dataTable);
            dataView.Sort = e.SortExpression + " " + GetSortDirection(e.SortExpression);

            grdOrdenes.DataSource = dataView;
            grdOrdenes.DataBind();
        }
    }

    public string SortExpression
    {
        get { return (ViewState["SortExpression"] == null ? string.Empty : ViewState["SortExpression"].ToString()); }
        set { ViewState["SortExpression"] = value; }
    }
    public string SortDirection
    {
        get { return (ViewState["SortDirection"] == null ? string.Empty : ViewState["SortDirection"].ToString()); }
        set { ViewState["SortDirection"] = value; }
    }
    private string GetSortDirection(string sortExpression)
    {
        if (SortExpression == sortExpression)
        {
            if (SortDirection == "ASC")
                SortDirection = "DESC";
            else if (SortDirection == "DESC")
                SortDirection = "ASC";
            return SortDirection;
        }
        else
        {
            SortExpression = sortExpression;
            SortDirection = "ASC";
            return SortDirection;
        }
    }

 
    protected void botonBuscar_Click(object sender, EventArgs e)
    {
        if (!String.IsNullOrEmpty(NroOT.Text))
        {


            Usuario usu = ((Usuario)(Session["UsuLogin"]));

            OrdenTrabajo orden = null;
            if (usu.Perfil.Id == 3)
            {
                Constructor c = Constructor.buscarConstructor(usu.TipoDoc.Codigo, usu.NroDoc);
                orden = OrdenTrabajo.buscarOrden(Convert.ToInt32(NroOT.Text),c.Codigo);
            }
            else
            {
                orden = OrdenTrabajo.buscarOrden(Convert.ToInt32(NroOT.Text));
            }


            if (orden != null)
            {

                DataTable dt = new DataTable();
                dt.Columns.Add("NroOT");
                dt.Columns.Add("Estado");
                dt.Columns.Add("FechaInicio");
                dt.Columns.Add("FechaFin");
                dt.Columns.Add("DiasTotalesEstipulados");
                DataRow dr;

                dr = dt.NewRow();
                dr["NroOT"] = orden.Codigo;
                dr["Estado"] = orden.EstadoOT.Descripcion;
                dr["FechaInicio"] = orden.FechaComienzo.ToShortDateString();
                dr["FechaFin"] = orden.fechaFin();
                dr["DiasTotalesEstipulados"] = orden.diasTotalesEstipulados();

                dt.Rows.Add(dr);

                grdOrdenes.DataSource = dt;
                grdOrdenes.DataBind();
            }
        }
        else
        {
            refreshGrid();
        }

    }


    private void refreshGrid()
    {

        DataTable dt = new DataTable();
        dt.Columns.Add("NroOT");
        dt.Columns.Add("Estado");
        dt.Columns.Add("FechaInicio");
        dt.Columns.Add("FechaFin");
        dt.Columns.Add("DiasTotalesEstipulados");
      
        DataRow dr;

        Usuario usu = ((Usuario)(Session["UsuLogin"]));

        List<OrdenTrabajo> ordenes=null;
        if (usu.Perfil.Id == 3){
           Constructor c= Constructor.buscarConstructor(usu.TipoDoc.Codigo, usu.NroDoc);
           ordenes = OrdenTrabajo.buscarOrdenes(c.Codigo);
        }else{
            ordenes = OrdenTrabajo.buscarOrdenes();
        }
        
        
        for (int i = 0; i < ordenes.Count; i++)
        {
            OrdenTrabajo orden = (OrdenTrabajo)ordenes[i];
            dr = dt.NewRow();
            dr["NroOT"] = orden.Codigo;
            dr["Estado"] = orden.EstadoOT.Descripcion;
            dr["FechaInicio"] = orden.FechaComienzo.ToShortDateString();
            dr["FechaFin"] = orden.fechaFin();
            dr["DiasTotalesEstipulados"] = orden.diasTotalesEstipulados();

            dt.Rows.Add(dr);
        }
        grdOrdenes.DataSource = dt;
        grdOrdenes.DataBind();
    }


    protected void grdOrdenes_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        Response.Redirect("GenerarOT.aspx?nroOT=" + grdOrdenes.Rows[e.RowIndex].Cells[0].Text + "&action=delete");
    }

    protected void grdOrdenes_RowEditing(object sender, GridViewEditEventArgs e)
    {
        Response.Redirect("GenerarOT.aspx?nroOT=" + grdOrdenes.Rows[e.NewEditIndex].Cells[0].Text + "&action=edit");
    }

    protected void grdOrdenes_RowSelect(object sender, GridViewSelectEventArgs e)
    {
        Response.Redirect("../abmObra/ConsultarDesvios.aspx?nroOT=" + grdOrdenes.Rows[e.NewSelectedIndex].Cells[0].Text);
    }
   
}